/**
  ******************************************************************************
  * @file    common.h
  * @author  ashuai0110
  * @version V1.0
  * @date    2024-01-05
  * @brief   驱动公共头文件,适用于PIC16(L)F1788_9
  *
  ******************************************************************************
  * @attention
  *
  ******************************************************************************
  */

#ifndef __COMMON_H
#define __COMMON_H

#ifdef __cplusplus
extern "C" {
#endif

/* 包含头文件-----------------------------------------------------------------*/
#include <xc.h>
#include <stdint.h>

/* 宏定义---------------------------------------------------------------------*/
/* 选择当前MCU型号 */
#define MCU_PIC16F1788                          (0u)
#define MCU_PIC16F1789                          (1u)
#define MCU_VERSION                             (MCU_PIC16F1789)
    
/* 全局中断开关 */
#define ENABLE_GLOBAL_INT()                     (GIE = 1, PEIE = 1)
#define DISABLE_GLOBAL_INT()                    (GIE = 0, PEIE = 0)
    
    
/* 置位 BIT_SET(0x10,0)=0x11 */
#ifndef BIT_SET
  #define BIT_SET(val, bitx)                    ((val) | (1u << (bitx)))
#endif
/* 复位 BIT_RESET(0x11,0)=0x10 */
#ifndef BIT_RESET
  #define BIT_RESET(val, bitx)                  ((val) & ~(1u << (bitx)))
#endif
/* 读取位 BIT_READ(0x11,4)=0x10 */
#ifndef BIT_READ
  #define BIT_READ(val, bitx)                   ((val) & (1u << (bitx)))
#endif
/* 翻转位 BIT_TOGGLE(0x10,0)=0x11 */
#ifndef BIT_TOGGLE
  #define BIT_TOGGLE(val, bitx)                 ((val) ^ (1u << (bitx)))
#endif
    
/* 类型定义-------------------------------------------------------------------*/

/* 全局变量-------------------------------------------------------------------*/

/* 函数原型-------------------------------------------------------------------*/


#ifdef __cplusplus
}
#endif

#endif /* common.h */